'use strict';

exports.main = async (event, context) => {
  let body = event;
  if (event.body != undefined) {
    body = JSON.parse(event.body);
  }

  let { testId, aiContent, resultId } = body;
  
  // 1. 基本参数校验
  if (testId === undefined || resultId === undefined || aiContent === undefined) {
    return {
      code: -1,
      message: '缺少必要参数'
    };
  }
  
  if (!aiContent || !Array.isArray(aiContent)) {
    return {
      code: -1,
      message: 'aiContent必须是非空数组'
    };
  }
  
  // 2. 校验testId有效性
  const testConfig = {
    1: "scl90问卷",
    2: "ucla问卷", 
    3: "stai问卷"
  };
  
  if (!testConfig[testId]) {
    return {
      code: -3,
      message: '无效的testId'
    };
  }

  // 3. 连接数据库
  const db = uniCloud.database();
  const collection = db.collection('mind_test_results');

  try {
    // 4. 检查resultId对应的记录是否存在，并验证testId是否一致
    const record = await collection.doc(resultId).get();
    
    if (!record.data || record.data.length === 0) {
      return {
        code: -4,
        message: '未找到匹配的resultId记录'
      };
    }
    
    const dbTestId = record.data[0].testId;
    if (dbTestId != testId) {
      return {
        code: -6,
        message: 'resultId对应的testId与参数testId不一致',
        details: {
          parameterTestId: testId,
          databaseTestId: dbTestId
        }
      };
    }

    // 5. 构建system消息
    const messages = [{
      role: 'system',
      content: `你是一个心理咨询师，下面是${testConfig[testId]}的回答结果，请你进行分析评价并给出温暖的鼓励`
    }];
    
    // 6. 将所有问题和回答合并成一条消息
    const combinedContent = aiContent.map(item => 
      `${item.question}（${item.label}）`
    ).join("\n");
    
    messages.push({
      role: 'user',
      content: combinedContent
    });
    
    // 7. 模拟AI响应（实际使用时取消注释）
    const llmManager = uniCloud.ai.getLLMManager({
      provider: 'azure',
      appId:'__UNI__EE510EF'
    });
    const res = await llmManager.chatCompletion({
      messages: messages
    });
    // const aiResponse = { reply: "当前为了节省token，ai接口被暂时注释" };
    console.log("ai接口返回结果"+res)
    // 8. 更新数据库记录
    const updateRes = await collection.doc(resultId).update({
      ai_estimation: aiResponse.reply
    });

    if (updateRes.updated === 1) {
      return {
        code: 0,
        message: 'AI 评价更新成功',
        reply: aiResponse.reply
      };
    } else {
      return {
        code: -4,
        message: '更新失败，记录可能已被删除'
      };
    }
  } catch (error) {
    console.error('数据库操作失败:', error);
    return {
      code: -5,
      message: '数据库操作失败',
      error: process.env.NODE_ENV === 'development' ? error.message : undefined
    };
  }
};